package com.jj.service;

import com.jj.dto.ProductTypeWithProductsDTO;
import com.jj.entity.Products;
import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface ProductService {

    /**
     * 根据商品id查询商品
     * @param productId
     * @return
     */
    Products selectById(@Param("productId") Integer productId);

    /**
     * 查询所有商品类型及其对应的商品列表
     * @return
     */
    List<ProductTypeWithProductsDTO> selectAllTypesWithProducts();

    /**
     * 添加新商品
     * @param product 商品对象
     * @return 影响的行数
     */
    @Transactional
    int insertProduct(Products product);

    /**
     * 更新商品信息
     * @param product 商品对象
     * @return 影响的行数
     */
    @Transactional
    int updateProduct(Products product);

    /**
     * 根据ID删除商品
     * @param productId 商品ID
     * @return 影响的行数
     */
    @Transactional
    int deleteById(@Param("productId") Integer productId);

    /**
     * 模糊查询所有商品（简单信息）
     * @return 商品列表
     */
    List<ProductTypeWithProductsDTO> selectAllProducts(@Param("productName") String productName);
}
